package com.zkthink.ceres.pay.wechat.v3.entity.request.applyments;

import com.alibaba.fastjson.annotation.JSONField;
import com.zkthink.ceres.pay.wechat.v3.entity.request.BasePayRequest;
import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * <p>
 * 合单关闭单
 * * 参考文档：https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/combine/chapter3_3.shtml
 *
 * @author vivi.huang
 * @since 2020/5/17
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder(builderMethodName = "newBuilder")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ModifySettlementRequest extends BasePayRequest {

    private static final long serialVersionUID = -8100791351891543014L;

    /**
     * 特约商户号	sub_mchid	string(10)	是
     * path请填写本服务商负责进件的特约商户号。
     * 特殊规则：长度最小8个字节。
     * 示例值：1511101111
     */
    @JSONField(name = "sub_mchid")
    private String sub_mchid;

    /**
     * 账户类型	account_type	enum	是
     * 根据特约商户号的主体类型，可选择的账户类型如下：
     * 1、小微主体：经营者个人银行卡
     * 2、个体工商户主体：经营者个人银行卡/ 对公银行账户
     * 3、企业主体：对公银行账户
     * 4、党政、机关及事业单位主体：对公银行账户
     * 5、其他组织主体：对公银行账户
     * 枚举值：
     * ACCOUNT_TYPE_BUSINESS：对公银行账户
     * ACCOUNT_TYPE_PRIVATE：经营者个人银行卡
     * 示例值：ACCOUNT_TYPE_BUSINESS
     */
    @JSONField(name = "account_type")
    private String accountType;

    /**
     * 开户银行	account_bank	string(128)	是
     * 请填写开户银行名称，详细参见开户银行对照表。
     * 示例值：工商银行
     */
    @JSONField(name = "account_bank")
    private String accountBank;

    /**
     * 开户银行省市编码	bank_address_code	string(128)	是
     * 需至少精确到市，详细参见省市区编号对照表。
     * 示例值：110000
     */
    @JSONField(name = "bank_address_code")
    private String bankAddressCode;

    /**
     * 开户银行全称（含支行）	bank_name	string(128)	否
     * 若开户银行为“其他银行”，则需二选一填写“开户银行全称（含支行）”或“开户银行联行号”。
     * 填写银行全称，如"深圳农村商业银行XXX支行" ，详细参见开户银行全称（含支行）对照表。
     * 示例值：施秉县农村信用合作联社城关信用社
     */
    @JSONField(name = "bank_name")
    private String bankName;

    /**
     * 开户银行联行号	bank_branch_id	string(128)	否
     * 若开户银行为“其他银行”，则需二选一填写“开户银行全称（含支行）”或“开户银行联行号”。
     * 填写银行联行号，详细参见开户银行全称（含支行）对照表。
     * 示例值：402713354941
     */
    @JSONField(name = "bank_branch_id")
    private String bankBranchId;

    /**
     * 银行账号	account_number	string(128)	是	1、数字，长度遵循系统支持的对公/对私卡号长度要求
     * 2、该字段需进行加密处理，加密方法详见敏感信息加密说明。(提醒：必须在HTTP头中上送Wechatpay-Serial)
     */
    @JSONField(name = "account_number")
    private String accountNumber;

    @Override
    public String getUrl() {
        return null;
    }

    @Override
    public int getReadTimeoutMs() {
        return 0;
    }

    @Override
    public int getConnectTimeoutMs() {
        return 0;
    }

    @Override
    public String getRequestData() {
        return null;
    }
}